package com.ego.ware.dao;

import com.ego.ware.po.WareSku;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

/**
 * @program: ego
 * @description 商品库存持久层
 * @author KamTang
 * @date 2022-11-13 13:30:29
 */
public interface WareSkuDao extends BaseMapper<WareSku> {
    /**
     * 入库操作
     * @param skuId skuId
     * @param wareId wareId
     * @param skuNum skuNum
     */
    void stock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("skuNum") Integer skuNum);

    /**
     * 查询当前sku的总库存量
     * @param skuId skuId
     * @return 库存数
     */
    Long getInventory(@Param("skuId") Long skuId);

    /**
     * 订单确认后，锁定库存
     * @param skuId skuId
     * @param wareId 仓库id
     * @param count 商品数量
     * @return 成功为1；失败为0
     */
    Long lockSkuStock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("count") Integer count);

    /**
     * 解锁
     * @param skuId skuId
     * @param wareId 仓库id
     * @param skuNum 商品数量
     */
    void unlock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("skuNum") Integer skuNum);
}
